#include <stdio.h>
#include <omp.h>  // 添加OpenMP头文件

int array_sum(int n, int *v) {
    int i;
    int res = 0;
    // OpenMP任务循环归约
    #pragma omp taskloop reduction(+: res)
    for(i = 0; i < n; ++i)
        res += v[i];
    return res;
}

int main(int argc, char *argv[]) {
    int n = 10;
    int v[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  // 修正中文逗号
    
    // 并行区域（主线程创建任务）
    #pragma omp parallel
    #pragma omp single  // 保证只执行一次
    {
        int res = array_sum(n, v);
        printf("The result is %d\n", res);  // 补充分号
    }
    return 0;
}